Modern computer and communications networks interconnect a variety of different types of computer systems that operate many types of operating systems and software applications. The computer systems and data communications devices in such network are able to communicate with one another using different types of data communications protocols. A data communications protocol is generally a set of agreed-upon message formats and rules for processing such messages that software applications, firmware or hardware operating on data communications devices and computer systems within a network can implement in order to exchange data and information with each other.
Conventional implementations of data communications within network devices or computer systems typically provide a communications protocol stack in which different protocols are implemented by hardware or software processing for different layers of the stack. Each protocol in each layer of the stack serves a particular purpose. Communications messages or packets are thus collections of built-up protocol headers and data arranged according to the protocols implemented for the different layers of the protocol stack. A packet traveling in the network may include header information for several different protocols from different layers in the stack.
As an example, for a typical communications packet that is transmitted over an Internet Protocol (IP)-based network such as the Internet, an upper-layer application level protocol such as the hypertext transport protocol (HTTP) provides an HTTP header and payload information that is nested within a Transmission Control Protocol (TCP) packet header that is further nested within an Internet Protocol (IP) packet header. As such a packet travels across the Internet, each data communications device and/or computer system that receives the packet can apply appropriate protocol processing to the packet header corresponding to different layers of the protocol stack, as may be required, to properly process and forward or route that packet. As an example, the IP header allows data communications devices such as switches and routers in the network to route the packet towards its final destination. The TCP header allows a destination computer system to order received packets in the order they were transmitted and to ensure that the packets arrive error-free. Additionally, the TCP header includes a field known as the port number that allows a specification of an application layer protocol to be used during the communications between a source and destination computer. As an example, if the TCP/IP packet arrives with its port number set to 80, this typically indicates the packet is associated with the HTTP protocol. TCP port numbers can range from 0 up to 65535 and computer systems on a network can enable services that “listen” for certain packets having certain predefined port number specified in their TCP (or UDP) packet headers. The HTTP information within the packet is an application layer protocol that allows a web-based application, such as a web browser or web server, executing on the destination computer system to process information in the packet associated with HTTP processing.
Some protocols may require a series of back and forth message exchanges generally referred to as a handshaking sequence to enable each computer system to properly establish protocol state or other information prior to the protocol becoming fully operational. As an example, when two applications communicate using TCP, a TCP handshake occurs in which a source or initiating computer system transmits an initial TCP synchronize (TCP SYN) packet to the remote computer system which then responds with its own synchronize bit set and its own initial sequence number along with an acknowledgment (TCP SYN|ACK) of the initial synchronize packet sent from the first system in the prior packet. Upon receipt of the TCP acknowledgment, the initiating or source computer system further acknowledges this with a TCP ACK packet (an acknowledgment of the second packet where the recipient system acknowledged the initial SYN packet and sent its own synchronize bit and initial sequence number to the originating system). This exchange is referred to as the TCP three-way handshake. As data is exchanged after establishment of the TCP handshake, session state is maintained by both computer systems in the session to enable proper packet processing at each end.
Standards organizations have developed a number of specific data communications protocols that enable computer systems to discover information about one another within computer networks. As an example, the Internet Control Messaging Protocol provides a set of message requests and responses collectively known as the ping protocol. The ping protocol allows an application executing on a source computer system on a computer network to generate an Internet Control Message Protocol (ICMP) echo request that will be responded to with an ICMP echo reply packet when received by a (usually) remote system on a network. The purpose of the ping request is to try to identify the existence and operation of the remote computer system at the specified address. Data communication devices within the network that receive an IP packet containing an ICMP header specifying an ICMP type of ECHO (also referred to as a ‘ping’) typically transfer the ping request through the network towards the specified address. If the ping request message reaches the intended destination computer system having the address specified in the request, the destination computer system responds with an ICMP echo reply response message indicating the operational presence of the destination computer system on the network. A typical ICMP ECHO REPLY will include the original information that was sent in the initial ICMP ECHO request. This information is usually a timer to enable the initiating system to determine the network latency when receiving an associated response packet. Network administrators often use the ping protocol to test a communications link for accessibility to a remote computer system. Other protocols enable further information gathering from remote systems but the case of ICMP ECHO packets (ping) will be used as a general example for these varying stateless protocols.